package cn.iocoder.yudao.module.api.pay.bill;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.api.pay.bill.dto.PayBillCreateDTO;
import cn.iocoder.yudao.module.api.pay.bill.dto.PayBillPageDTO;
import cn.iocoder.yudao.module.api.pay.bill.dto.PayBillRespDTO;
import jakarta.validation.Valid;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  账单流水接口
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2024/12/17
 */
public interface PayBillApi {

    /**
     * 关联编号是否存在
     *
     * @param userId   用户编号
     * @param relateId 关联id
     */
    boolean exists(Long userId, String relateId);

    /**
     * 增加支出流水
     */
    void expendAsync(PayBillCreateDTO dto);

    /**
     * 增加收入流水
     */
    void incomeAsync(PayBillCreateDTO dto);

    /**
     * 获取账单
     *
     * @param userId 用户编号
     * @param reqVO  请求参数
     */
    PageResult<PayBillRespDTO> getBillPage(Long userId, @Valid PayBillPageDTO reqVO);

}
